package com.yixing.tech.wcs.constant;

/**
 * 机器人类型枚举
 * 定义了仓库中不同库区对应的机器人类型映射关系
 * 主要包括CTU（穿梭车）区域、堆垛机区域和AGV区域
 */
public enum RobotTypeEnum {
    /** CTU区域机器人类型：对应CTU库区和CTU机器人 */
    CTU_AREA(DictId.AreaAutoType.CTU_AREA, DictId.BotType.CTU),
    /** 堆垛机区域机器人类型：对应堆垛机库区和堆垛机机器人 */
    STACKER_AREA(DictId.AreaAutoType.STACKER_AREA, DictId.BotType.STACKER),
    /** AGV区域机器人类型：对应AGV库区和AGV机器人 */
    AGV_AREA(DictId.AreaAutoType.AGV_AREA, DictId.BotType.AGV);

    /** 库区自动化类型 */
    private final String areaAutoType;
    /** 机器人类型 */
    private final String botType;

    /**
     * 构造函数
     * @param areaAutoType 库区自动化类型
     * @param botType 机器人类型
     */
    RobotTypeEnum(String areaAutoType, String botType) {
        this.areaAutoType = areaAutoType;
        this.botType = botType;
    }

    /**
     * 获取库区自动化类型
     * @return 库区自动化类型
     */
    public String getAreaAutoType() {
        return areaAutoType;
    }

    /**
     * 获取机器人类型
     * @return 机器人类型
     */
    public String getBotType() {
        return botType;
    }

    /**
     * 根据库区自动化类型获取机器人类型枚举
     * @param areaAutoType 库区自动化类型
     * @return 机器人类型枚举，未找到则返回null
     */
    public static RobotTypeEnum getByAreaAutoType(String areaAutoType) {
        for(RobotTypeEnum robotTypeEnum : RobotTypeEnum.values()) {
            if(robotTypeEnum.getAreaAutoType().equals(areaAutoType))
                return robotTypeEnum;
        }
        return null;
    }

    /**
     * 根据机器人类型获取机器人类型枚举
     * @param botType 机器人类型
     * @return 机器人类型枚举，未找到则返回null
     */
    public static RobotTypeEnum getByRobotType(String botType) {
        for(RobotTypeEnum robotTypeEnum : RobotTypeEnum.values()) {
            if(robotTypeEnum.getBotType().equals(botType))
                return robotTypeEnum;
        }
        return null;
    }

}
